import collections
# 给定一个非负整数 num，反复将各个位上的数字相加，直到结果为一位数。

# 输入: 38
# 输出: 2
# 解释: 各位相加的过程为：3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数，所以返回 2。

# https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/


# 执行用时：32 ms, 在所有 Python3 提交中击败了91.49%的用户
# 内存消耗：14.9 MB, 在所有 Python3 提交中击败了24.49%的用户
# 内存完败 生闷气

class Solution:
    def addDigits(self, num: int) -> int:
        num_str = str(num)
        while len(num_str) > 1:
            num_str = self.addDigits_2(num_str)
        return int(num_str)
    
    def addDigits_2(self, num_str):
        out = 0
        for i in num_str:
            out += int(i)
        return str(out)


# 题解里翻到个答案碉堡了! 这居然是个数学问题 任意num为9的倍数时，其位数最终和必为0
class SolutionAnswer:
    def addDigits(self, num: int) -> int:
        if num == 0:
            return 0
        if num % 9 == 0:
            return 9
        return num % 9


